{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cfd82375-5a12-48a5-b393-7f7c12fb1352",
   "metadata": {},
   "source": [
    "只有两个特征，建立二元回归，同时可以画图观察拟合情况"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "13a789fe-3c76-47ba-b7ea-e07303ec6582",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>工龄</th>\n",
       "      <th>薪水</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>10808</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.1</td>\n",
       "      <td>13611</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.2</td>\n",
       "      <td>12306</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.3</td>\n",
       "      <td>12151</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.3</td>\n",
       "      <td>13057</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    工龄     薪水\n",
       "0  0.0  10808\n",
       "1  0.1  13611\n",
       "2  0.2  12306\n",
       "3  0.3  12151\n",
       "4  0.3  13057"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_excel('IT行业收入表.xlsx')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "31efb548-0808-4aaa-ac91-fc47ae54f0cb",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df['工龄'].to_frame()\n",
    "Y = df['薪水']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "d85fb9c1-8c68-48b3-8948-16c581571d09",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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sxMdUtIxINRqXUxutkj9OkWnqrwWgsI07HTPE+nYTqR9y6KP3fIIQT5mexDat2+f3HvvvfL888/L4cOHpV27djJy5Eg5f/68DBgwQDp37iybNm2SnTt3yty5c83X5Ofny8CBA2Xo0KGyceNGWbBggaxdu7Y4PA0bNkzGjx8vK1eulAkTJsiePXvMNf18zJgxMmvWLJk/f775OcePH7f7JQNAalltZJiqbbKg1c+Ej9V7PdTBnUFIV380BN15551mpebBBx+ULVu2yPLly+XUqVNmtad169YyceJEee2118zXaPDR1R4NO23btjVhJ3xt9uzZ0qtXLxNyrr76annkkUdk3rx55trLL78sI0aMkEGDBskNN9xgPr711lt2v2QASK1EGhk6WT/jlUGsCDTbg1D//v1l1KhRxZ/r6o2Gm61bt0r37t2lWrVq5v68vDyzKqT0moadjB/+T9a1a1fZvHlz8bXevXsXfz+r12LRVamCgoISNwBwHSd63oTrZ6JXhkoritatuQ+3iWz9XGTX/qKP+nkqt+wArxdLX7hwQV588UV54oknZO/evdKyZcviaxp6MjMz5cSJEyaQdOjQofhadna2HDlyxPxZr0V+ndVrsUyaNEmeffbZlL9OAPBFz5tYw1xjFUV7bRArAs3R4/PPPPOMVK9e3WxraeF05cqVS1yvUqWKnDt37opr4ftVstdiGTdunNmeC98OHjyY0tcLAJ6v2Smrfsbu+iXAqytCeoJLT3R9+OGHUrFiRaldu7YpfI50+vRpqVSpkrmmBdPR96tkr8WioSk6jAGA64RrduJ1enaq542XB7EikBxZEdq/f785AaZBKLzlpcfm9URY5GO0ZkfDTPQ1La5u3LhxzK+zeg0APC3Rmh27MLMLHmN7EPr+++9NwbSe4Bo8eLCcOXPG3Hr06GFqeubMmWMep6fG+vTpY+qE9Oj8hg0bZPXq1VJYWCiTJ0+Wvn37mscNGTJEFi1aJNu3bzffZ/r06cXX7rjjDpk5c6Y5pv/NN9+Yk2bhawDgeW7secPMLnhMRiiya6FNzRRvv/32K+7XFaBt27aZlaKqVatKhQoVZN26dcUrRq+88oqMHj1aatSoITk5OWalR4/fq1//+tfywgsvmBogPYH2/vvvm++hL2348OHy5z//2TzupptukqVLlxafPiuLBrNatWqZeiEttAYA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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "plt.scatter(X,Y,color='pink')\n",
    "plt.xlabel('工龄')\n",
    "plt.ylabel('薪水')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "645ea5b6-eea6-45f6-b9cf-a5cd1cd0e124",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-4 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-4 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-4 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-4 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-4 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-4 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-4 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-4 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-4 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-4 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-4 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-4 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-4 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-4 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-4\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "regr = LinearRegression()\n",
    "regr.fit(X,Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "67f0dcf9-a059-414c-bc2c-49c31acdcf99",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X,Y,color='pink')\n",
    "plt.plot(X, regr.predict(X), color='cyan')\n",
    "plt.xlabel('工龄')\n",
    "plt.ylabel('薪水')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "b412c6c9-7a32-4bb7-8059-b65dafed5745",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2497.1513476])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "fbe8120e-0aa8-46e4-9955-dc6ba41c9a00",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(10143.131966873787)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.intercept_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e260a386-14cf-47b9-9707-b66efd17e3ff",
   "metadata": {},
   "source": [
    "工龄越大时，拟合效果越不好，推测可能有二次项"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "45e5cf74-ac36-40f2-8616-7d243fadf796",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "poly_reg = PolynomialFeatures(degree=2)\n",
    "X_ = poly_reg.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "b19397fd-247e-4600-85eb-2c5c2876ad62",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-5 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-5 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-5 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-5 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-5 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-5 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-5 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-5 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-5 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-5 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-5 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-5 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-5 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-5 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-5\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-5\" type=\"checkbox\" checked><label for=\"sk-estimator-id-5\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr = LinearRegression()\n",
    "regr.fit(X_, Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "7b2e1b27-cf47-457c-a289-a25bb73ad085",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGbCAYAAADawqrfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAATVtJREFUeJzt3Ql4VOXZPvB7sieQPSyy7wotiyKIfkUKUlFkKQVtEQvVUutWXAptUcHaWrB8isj3AYpQUDaruGDrhyAK1PJHK5Syg4Jh3wKEhBDIQs7/et6ciZNhMnNmP+fM/buu6WTmnMyCaebO+z7v8zo0TdNAREREZCFx0X4BRERERP5igCEiIiLLYYAhIiIiy2GAISIiIsthgCEiIiLLYYAhIiIiy2GAISIiIsthgCEiIiLLSYANVVVV4dixY0hPT4fD4Yj2yyEiIiIDpLfu+fPn0aRJE8TFxcVegJHw0rx582i/DCIiIgrA4cOH0axZs9gLMDLy4vwHyMjIiPbLISIiIgOKi4vVAITzczzmAoxz2kjCCwMMERGRtRgp/2ARLxEREVkOAwwRERFZDgMMERERWQ4DDBEREVkOAwwRERFZDgMMERERWQ4DDBEREVkOAwwRERFZji0b2REREVGYaBpQdB4orwCSEoHMdOk8h0hjgCEiIiJjCgqBfYeqw4uThJh2LYAG2YgkTiERERGRsfCya3/t8CLkttwvxyOIAYaIiIh8TxvJyIs3+w9VnxchDDBERETknbPmxZuyiurzIoQBhoiIiLzzFV78PS8EGGCIiIjIOynUDeV5IcAAQ0RERN7JUmlf4SRZX1IdIQwwRERE5J30eZGl0t60bRHRfjAMMEREROSb9Hnp1PbKkRgZeZH7I9wHho3siIiIyBgJKXlZ7MRLREREFuNwAFkZ0X4VDDBERERk3j2P6sIAQ0RERKbd8yikRbznzp3DF198gcLCyO57QERERGFmsj2PQhZg3n77bbRq1Qpjx45Fs2bN1G0xbtw4OByOmku7du1qvmfHjh3o0aMHsrOzMWHCBGgueyWsX78eHTt2RF5eHqZPn17ruZYvX46WLVuiSZMmWLZsWXDvlIiIiCy351FIAkxRUREeeugh/OMf/8D27dsxa9YsFUjEpk2b8OGHH6pRGbls2bJF3V9WVobBgweje/fu6pxdu3Zh4cKF6lhBQQGGDBmCkSNHYuPGjViyZAnWrl1bE3pGjRqFSZMmYdWqVZg8eTL27t0b+n8BIiIiMu2eRyEJMMXFxZgxYwa6dOmibl933XU4c+YMKisrsXPnTtx8883IyspSl/T06m58K1euVMFHRlfatm2LKVOmYP78+eqYBBYZXZGQ0r59exVSnMfmzZuHvn37qpGezp0745FHHsGiRYtC/y9AREREpt3zKCQBpnnz5mpURFRUVOCll17CsGHD1GhMVVUVunXrhtTUVNx22204dKh6CGrr1q3o1asX0tLS1G0JPzIK4zwmIUWmnETPnj2xefPmmmP9+vWreW7XY+5klEfCleuFiIiIrL/nUUiLeCVcNG7cGB999BFmzpypAsnVV1+tRki2bduGhIQE3H///epcCROtW7eu+V4JK/Hx8Wqayf1YRkYGjh075vH7XI+5mzp1KjIzM2suErSIiIhigqYB54qBU2eqr4OpTzHhnkchXUYtoyirV6/G448/rqZ4pNjWOTIjZs+ercKHhBAJM8nJybW+PyUlBaWlpVccc96vXpiXY+4mTpyIJ554oua2PC9DDBER2V5BiJY7u/Z8uSoPOHjcNHsehTTAyCiKFOW+/vrrqq5FllVL3YtTw4YN1ZTS8ePHkZOTowpyXZ0/fx5JSUnqmBTyut8vvB1zJ0HHPSQRERHFxHJnd87lzkb3J/IUghLiq68rL9ceeWlr0T4wsuTZuepISKCQMPPss89i6dKlNffLiqK4uDg1CiLLp+W2U35+vqpZkYDifkxWLjVt2lR97e0YERFRTNNCtNy5rp4vElzk0rIJ0LE10LUDcEMX04QXvwNMhw4dMHfuXHU5fPgwnnzySdx6661qNObpp5/GJ598oqaWHnjgAYwePVoV7srKJJnSWbBggXoMWYXUv39/VQcjS6g3bNiANWvWqKLgadOmYcCAAeq84cOH480331QFwiUlJarWxnmMiIgophWFYLmzkRB0ogBokFO995EJpo0CnkK66qqrVL3LY489hvHjx6tA8cYbb6BBgwZqGbWEDgkm99xzjwoq6gkSEtSSaOn1IqM3MjKzbt06dUya18lKpoEDB6J+/fpqGsrZI6Zr16549NFHcf3116v6F1lmLT1oiIiIYl55CJY7+xOCTLB5ozuH5toWN4xOnDihlkHLkurc3Nxax2Raac+ePejdu7cKMq5khdPRo0fR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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(X,Y,color='pink')\n",
    "plt.plot(X, regr.predict(X_), color='cyan')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "e8b9ce08-5cea-4dbb-a5fc-38e668f8ba8d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([   0.        , -743.68080444,  400.80398224])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.coef_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "709b0022-f94f-4966-a0ce-b8493d500839",
   "metadata": {},
   "source": [
    "第一个为0指x的0次方项的系数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "5086ebf6-d371-4c2b-bfc4-10760512833c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(13988.15933209689)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.intercept_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77048743-6245-47c4-98a6-4e3b6a0086a4",
   "metadata": {},
   "source": [
    "比较两次的效果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7fc970bc-8a7c-49a7-9852-d17347c68439",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                     薪水   R-squared:                       0.855\n",
      "Model:                            OLS   Adj. R-squared:                  0.854\n",
      "Method:                 Least Squares   F-statistic:                     578.5\n",
      "Date:                Tue, 07 Oct 2025   Prob (F-statistic):           6.69e-43\n",
      "Time:                        15:30:20   Log-Likelihood:                -930.83\n",
      "No. Observations:                 100   AIC:                             1866.\n",
      "Df Residuals:                      98   BIC:                             1871.\n",
      "Df Model:                           1                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const       1.014e+04    507.633     19.981      0.000    9135.751    1.12e+04\n",
      "工龄          2497.1513    103.823     24.052      0.000    2291.118    2703.185\n",
      "==============================================================================\n",
      "Omnibus:                        0.287   Durbin-Watson:                   0.555\n",
      "Prob(Omnibus):                  0.867   Jarque-Bera (JB):                0.463\n",
      "Skew:                           0.007   Prob(JB):                        0.793\n",
      "Kurtosis:                       2.667   Cond. No.                         9.49\n",
      "==============================================================================\n",
      "\n",
      "Notes:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "X2 = sm.add_constant(X)\n",
    "est = sm.OLS(Y,X2).fit()\n",
    "print(est.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "2d575dbe-6ac3-4fd2-b573-affaf90d9cef",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                     薪水   R-squared:                       0.931\n",
      "Model:                            OLS   Adj. R-squared:                  0.930\n",
      "Method:                 Least Squares   F-statistic:                     654.8\n",
      "Date:                Tue, 07 Oct 2025   Prob (F-statistic):           4.70e-57\n",
      "Time:                        15:31:04   Log-Likelihood:                -893.72\n",
      "No. Observations:                 100   AIC:                             1793.\n",
      "Df Residuals:                      97   BIC:                             1801.\n",
      "Df Model:                           2                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const       1.399e+04    512.264     27.307      0.000     1.3e+04     1.5e+04\n",
      "x1          -743.6808    321.809     -2.311      0.023   -1382.383    -104.979\n",
      "x2           400.8040     38.790     10.333      0.000     323.816     477.792\n",
      "==============================================================================\n",
      "Omnibus:                        2.440   Durbin-Watson:                   1.137\n",
      "Prob(Omnibus):                  0.295   Jarque-Bera (JB):                2.083\n",
      "Skew:                          -0.352   Prob(JB):                        0.353\n",
      "Kurtosis:                       3.063   Cond. No.                         102.\n",
      "==============================================================================\n",
      "\n",
      "Notes:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "X3 = sm.add_constant(X_)\n",
    "est = sm.OLS(Y,X3).fit()\n",
    "print(est.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9255cc8d-c1d8-4015-ad0d-5361256d5d1c",
   "metadata": {},
   "source": [
    "可以输出其中的参数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ae8e1105-7ac5-4f1c-87c1-9082c3545f7a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "92cab6ae-51f6-4974-b729-a5a3303b1931",
   "metadata": {},
   "source": [
    "R方从0.855提升至0.931 有二次项的模型更符合数据的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0761b063-b862-466f-8618-ef499e6ce139",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec6ee20c-4f3b-4356-9def-54b0f21a7264",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c8deadd2-76e1-4986-bc78-48ff817882a4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46aa7ba1-876a-4ac4-840f-b09ec0849cd9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "92f3c3f2-fa87-4acb-ace2-78871018f301",
   "metadata": {},
   "source": [
    "下面有多个特征采用多元线性回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b380c8d4-7f1e-439d-942a-53ba36c81848",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>客户价值</th>\n",
       "      <th>历史贷款金额</th>\n",
       "      <th>贷款次数</th>\n",
       "      <th>学历</th>\n",
       "      <th>月收入</th>\n",
       "      <th>性别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1150</td>\n",
       "      <td>6488</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>9567</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1157</td>\n",
       "      <td>5194</td>\n",
       "      <td>4</td>\n",
       "      <td>2</td>\n",
       "      <td>10767</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1163</td>\n",
       "      <td>7066</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>9317</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>983</td>\n",
       "      <td>3550</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>10517</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1205</td>\n",
       "      <td>7847</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>11267</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   客户价值  历史贷款金额  贷款次数  学历    月收入  性别\n",
       "0  1150    6488     2   2   9567   1\n",
       "1  1157    5194     4   2  10767   0\n",
       "2  1163    7066     3   2   9317   0\n",
       "3   983    3550     3   2  10517   0\n",
       "4  1205    7847     3   3  11267   1"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_excel('客户价值数据表.xlsx')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "94e2c6c6-a3cf-4194-bd33-894c0dc02feb",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df[['历史贷款金额','贷款次数','学历','月收入','性别']]\n",
    "Y = df['客户价值']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e321238f-6bee-48f1-a13f-87440e052548",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: #000;\n",
       "  --sklearn-color-text-muted: #666;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: flex;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "  align-items: start;\n",
       "  justify-content: space-between;\n",
       "  gap: 0.5em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label .caption {\n",
       "  font-size: 0.6rem;\n",
       "  font-weight: lighter;\n",
       "  color: var(--sklearn-color-text-muted);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 0.5em;\n",
       "  text-align: center;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LinearRegression()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow\"><div><div>LinearRegression</div></div><div><a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.6/modules/generated/sklearn.linear_model.LinearRegression.html\">?<span>Documentation for LinearRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></div></label><div class=\"sk-toggleable__content fitted\"><pre>LinearRegression()</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "regr = LinearRegression()\n",
    "regr.fit(X,Y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "cd195717-a322-41f9-992c-c525a160bcc9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.71421731e-02, 9.61723492e+01, 1.13452022e+02, 5.61326459e-02,\n",
       "       1.97874093e+00])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.coef_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "3d73584d-ff1a-4c15-a19e-6fe370b21cba",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.float64(-208.42004079958429)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "regr.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "39ff1298-7570-433e-a814-a34bcf251589",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                   客户价值   R-squared:                       0.571\n",
      "Model:                            OLS   Adj. R-squared:                  0.553\n",
      "Method:                 Least Squares   F-statistic:                     32.44\n",
      "Date:                Tue, 07 Oct 2025   Prob (F-statistic):           6.41e-21\n",
      "Time:                        14:22:41   Log-Likelihood:                -843.50\n",
      "No. Observations:                 128   AIC:                             1699.\n",
      "Df Residuals:                     122   BIC:                             1716.\n",
      "Df Model:                           5                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "const       -208.4200    163.810     -1.272      0.206    -532.699     115.859\n",
      "历史贷款金额         0.0571      0.010      5.945      0.000       0.038       0.076\n",
      "贷款次数          96.1723     25.962      3.704      0.000      44.778     147.567\n",
      "学历           113.4520     37.909      2.993      0.003      38.406     188.498\n",
      "月收入            0.0561      0.019      2.941      0.004       0.018       0.094\n",
      "性别             1.9787     32.286      0.061      0.951     -61.934      65.891\n",
      "==============================================================================\n",
      "Omnibus:                        1.597   Durbin-Watson:                   2.155\n",
      "Prob(Omnibus):                  0.450   Jarque-Bera (JB):                1.538\n",
      "Skew:                           0.264   Prob(JB):                        0.464\n",
      "Kurtosis:                       2.900   Cond. No.                     1.28e+05\n",
      "==============================================================================\n",
      "\n",
      "Notes:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
      "[2] The condition number is large, 1.28e+05. This might indicate that there are\n",
      "strong multicollinearity or other numerical problems.\n"
     ]
    }
   ],
   "source": [
    "import statsmodels.api as sm\n",
    "X2 = sm.add_constant(X)\n",
    "est = sm.OLS(Y,X2).fit()\n",
    "print(est.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e827ab65-eb2d-4f92-a716-f70c81687589",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: statsmodels in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (0.14.4)\n",
      "Requirement already satisfied: numpy<3,>=1.22.3 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from statsmodels) (2.2.5)\n",
      "Requirement already satisfied: scipy!=1.9.2,>=1.8 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from statsmodels) (1.15.2)\n",
      "Requirement already satisfied: pandas!=2.1.0,>=1.4 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from statsmodels) (2.2.3)\n",
      "Requirement already satisfied: patsy>=0.5.6 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from statsmodels) (1.0.1)\n",
      "Requirement already satisfied: packaging>=21.3 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from statsmodels) (24.1)\n",
      "Requirement already satisfied: python-dateutil>=2.8.2 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from pandas!=2.1.0,>=1.4->statsmodels) (2.9.0.post0)\n",
      "Requirement already satisfied: pytz>=2020.1 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from pandas!=2.1.0,>=1.4->statsmodels) (2025.1)\n",
      "Requirement already satisfied: tzdata>=2022.7 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from pandas!=2.1.0,>=1.4->statsmodels) (2025.1)\n",
      "Requirement already satisfied: six>=1.5 in c:\\users\\xueka\\appdata\\local\\programs\\python\\python312\\lib\\site-packages (from python-dateutil>=2.8.2->pandas!=2.1.0,>=1.4->statsmodels) (1.16.0)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "[notice] A new release of pip is available: 25.0.1 -> 25.2\n",
      "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
     ]
    }
   ],
   "source": [
    "!pip install statsmodels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "63e025e1-5ed1-4d48-bac4-5d47cb2dc46d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
